From ef353f24c65eda28e36ca47b912bdede5fad65ab Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 5 May 2019 22:59:51 +0000 Subject: [PATCH] gdk: Inherit the frame clock for popups With separate clocks, the phases are not coordinated, which messes with GTKs size allocation machinery treating the entire widget tree as a whole, and causes us to run into assertion where popups get drawn before they are allocated. --- gdk/wayland/gdksurface-wayland.c | 5 ++++- gdk/x11/gdksurface-x11.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c index f5c209cebe..beea0dcdcd 100644 --- a/gdk/wayland/gdksurface-wayland.c +++ b/gdk/wayland/gdksurface-wayland.c @@ -510,7 +510,10 @@ _gdk_wayland_display_create_surface (GdkDisplay *display, GdkWaylandSurface *impl; GdkFrameClock *frame_clock; - frame_clock = _gdk_frame_clock_idle_new (); + if (parent) + frame_clock = g_object_ref (gdk_surface_get_frame_clock (parent)); + else + frame_clock = _gdk_frame_clock_idle_new (); surface = g_object_new (GDK_TYPE_WAYLAND_SURFACE, "display", display, diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c index 1d6dee093a..c4887c0fbc 100644 --- a/gdk/x11/gdksurface-x11.c +++ b/gdk/x11/gdksurface-x11.c @@ -809,7 +809,10 @@ _gdk_x11_display_create_surface (GdkDisplay *display, x11_screen = GDK_X11_SCREEN (display_x11->screen); xparent = GDK_SCREEN_XROOTWIN (x11_screen); - frame_clock = _gdk_frame_clock_idle_new (); + if (parent) + frame_clock = g_object_ref (gdk_surface_get_frame_clock (parent)); + else + frame_clock = _gdk_frame_clock_idle_new (); surface = g_object_new (GDK_TYPE_X11_SURFACE, "display", display, -- 2.30.2